﻿@{
  Layout = "~/Views/Shared/_ContentPage.cshtml";
  ViewBag.Title = "Develop - WorldWide Telescope";
}

@section leftnav {
  @Html.Partial("~/Views/GetInvolved/LeftNav.cshtml")
}

<h1>Developers Overview</h1>

<p> The WorldWide Telescope has several ways for developers to engage with the
  software. Web developers can embed a WWT control on their website, windows
  developers can access and control layers in the windows client, and convert
  images to formats WWT can render. Expert developers can contribute directly to
  the WWT code base, the open source home of WWT
  is <a href="https://github.com/WorldWideTelescope/wwt-home"> the wwt-home
    meta-repository on GitHub.</a></p>

<h2> Windows Developers</h2>

<i>Click the title below to expand or collapse the panel.</i>

<div class="panel-group" id="accordion">
  <div class="panel panel-default">
    <div class="panel-heading">
      <h4 class="panel-title">
        <a data-toggle="collapse" data-parent="#accordion" href="#sdks">
          The WWT Software Development Kit (SDK) and Academic Development Kit (ADK)
        </a>
      </h4>
    </div>

    <div id="sdks" class="panel-collapse collapse ">
      <div class="panel-body">
        <h4>
          <a href="@Model.ContentDir/drops/WWTSDK.msi">Click here to download
            WWT SDK, ADK Installer</a>
        </h4>

        <h5>Features</h5>

        <ol>
          <li>Tile Pyramid SDK, Samples and Documentation</li>
          <li>Tile Generator Tool</li>
          <li>LCAPI Sample</li>
          <li>Tile Service Sample</li>
          <li>Community Service Sample</li>
          <li>Sphere Toaster Tool</li>
          <li>Study Chopper Tool</li>
        </ol>

        <p>What you can do:</p>

        <ul>
          <li>Reproject image data into tile pyramids suitable for
            visualization in WorldWide Telescope.</li>
          <li>Turn global or local xyz data into image tile pyramids.</li>
          <li>Process Digital Elevation Models (DEM) into WWT compatible DEM
            tile pyramids.</li>
          <li>Share the tile pyramids with your colleagues.</li>
          <li>Create your own community containing tours, data and links that
            your colleagues can easily access.</li>
          <li> Use the Spherical Toaster and the Study Chopper to TOAST images
            to view in WWT.</li>
          <li>Add custom data to the Layer Manager of WorldWide Telescope.</li>
          <li>Connect your database and application specific processing with
            WorldWide Telescopes Visualization.</li>
          <li>Remotely control WWT from other applications.</li>
        </ul>

        <h5>Software Requirements</h5>

        <ul>
          <li>Windows 7 (Ultimate or Enterprise recommended), Windows Server
            2008 R2 (Older versions of Windows are not recommended)</li>
          <li>WorldWide Telescope Windows Client (Version 3.0.1 or above)</li>
          <li>.NET Framework 4.0</li>
          <li>Visual Studio 2010</li>
          <li>Web Deploy Tool (this is required if the Sharing Service tool is
            to be deployed)</li>
          <li>IIS with default web site and default app pool configured to use
            .Net 4.0</li>
        </ul>

        <h5>Hardware Requirements</h5>

        <ul>
          <li>A 64-bit dual-core processor is recommended, though a 32-bit is
            sufficient.</li>
          <li>4 GB of physical memory</li>
        </ul>

        <h5>Data Tools Guide </h5>

        <p>The following guides are aimed at software developers who already
          have familiarity with WWT.</p>

        <p>You can read the most updated version of this
          guide <a href="https://worldwidetelescope.gitbooks.io/worldwide-telescope-data-tools-guide/content/">online</a>,
          or download it in pdf, ePub, or Mobi format by following the download
          link on
          the <a href="https://www.gitbook.com/book/worldwidetelescope/worldwide-telescope-data-tools-guide/">gitbook
            page</a>.</p>

        <div class="row">
          <div class="col-md-10 col-md-offset-1">
            <div class="row home-features">
              <div class="col-md-3 col-md-offset-0 col-sm-6 col-sm-offset-3 col-xs-12">
                <a href="https://worldwidetelescope.gitbooks.io/worldwide-telescope-data-tools-guide/content/">
                  <img src="/Content/images/gbox.png" class="img-responsive">
                  <i class="fa fa-book"></i>
                  <h4>Read Online</h4>
                </a>
              </div>

              <div class="col-md-3 col-md-offset-0 col-sm-6 col-sm-offset-3 col-xs-12">
                <a href="~/Docs/worldwide-telescope-data-tools-guide.pdf">
                  <img src="/Content/images/gbox.png" class="img-responsive">
                  <i class="fa fa-file-pdf-o"></i>
                  <h4>Download .pdf</h4>
                </a>
              </div>

              <div class="col-md-3 col-md-offset-0 col-sm-6 col-sm-offset-3 col-xs-12">
                <a href="~/Docs/worldwide-telescope-data-tools-guide.mobi">
                  <img src="/Content/images/gbox.png" class="img-responsive">
                  <i class="fa fa-file-text-o"></i>
                  <h4>Download .mobi</h4>
                </a>
              </div>

              <div class="col-md-3 col-md-offset-0 col-sm-6 col-sm-offset-3 col-xs-12">
                <a href="~/Docs/worldwide-telescope-data-tools-guide.epub">
                  <img src="/Content/images/gbox.png" class="img-responsive">
                  <i class="fa fa-file-text"></i>
                  <h4>Download .epub</h4>
                </a>
              </div>
            </div>
          </div>
        </div>

        <h2>Control Layers in the WWT Windows Client</h2>

        <p><strong>What it can do</strong>: In addition to using the layer
          manager interactively, you can use scripting and programming languages
          to send commands and data into WWT from your own code driving the
          visualization of data in WWT. You can write code that can read data
          from a database, or create it mathematically and send it to WWT to
          render. In addition almost all of WWT functionality can be controller
          through the LCAPI. This means you can create control mechanisms for
          automated or interactive control of WWT through your own hardware and
          software. A good example of the use of the LCAPI is the ADS All-Sky
          Survey as seen in WorldWide Telescope,
          at <a href="http://www.adsass.org/wwt/">www.adsass.org/wwt/</a>.</p>

        <p><strong>Skills Required</strong>: You need to be familiar with the
          programing language or your choice, use the LCAPI documentation, and
          learn how to use HTTP request to send and receive data from WWT. There
          is also a library called Narwhal that provides a .NET wrapper and high
          level programming features for those who use .NET. Any language that
          can call HTTP web services can control WWT, and a Python interface has
          already been implemented, as pyWWT,
          (see <a href="https://github.com/jzuhone/pywwt">https://github.com/jzuhone/pywwt</a>).</p>

        <h5>LCAPI Guide</h5>

        <p>You can read the most updated version of this
          guide <a href="https://worldwidetelescope.gitbooks.io//worldwide-telescope-layer-control-api/content/">online</a>,
          or download it in pdf, ePub, or Mobi format by following the download
          link on
          the <a href="https://www.gitbook.com/book/worldwidetelescope//worldwide-telescope-layer-control-api/">gitbook
            page</a>.</p>

        <div class="row">
          <div class="col-md-10 col-md-offset-1">
            <div class="row home-features">
              <div class="col-md-3 col-md-offset-0 col-sm-6 col-sm-offset-3 col-xs-12">
                <a href="https://worldwidetelescope.gitbooks.io/worldwide-telescope-layer-control-api/content/">
                  <img src="/Content/images/gbox.png" class="img-responsive">
                  <i class="fa fa-book"></i>
                  <h4>Read Online</h4>
                </a>
              </div>

              <div class="col-md-3 col-md-offset-0 col-sm-6 col-sm-offset-3 col-xs-12">
                <a href="~/Docs/worldwide-telescope-layer-control-api.pdf">
                  <img src="/Content/images/gbox.png" class="img-responsive">
                  <i class="fa fa-file-pdf-o"></i>
                  <h4>Download .pdf</h4>
                </a>
              </div>

              <div class="col-md-3 col-md-offset-0 col-sm-6 col-sm-offset-3 col-xs-12">
                <a href="~/Docs/worldwide-telescope-layer-control-api.mobi">
                  <img src="/Content/images/gbox.png" class="img-responsive">
                  <i class="fa fa-file-text-o"></i>
                  <h4>Download .mobi</h4>
                </a>
              </div>

              <div class="col-md-3 col-md-offset-0 col-sm-6 col-sm-offset-3 col-xs-12">
                <a href="~/Docs/worldwide-telescope-layer-control-api.epub">
                  <img src="/Content/images/gbox.png" class="img-responsive">
                  <i class="fa fa-file-text"></i>
                  <h4>Download .epub</h4>
                </a>
              </div>
            </div>
          </div>
        </div>

        <h5>Known Issues</h5>

        <ol>
          <li>The SDK currently provides samples for the tiling of image files
            (.png,.jpg,.jpeg,.tif,.tiff) and xyz files (comma separated
            containing lat, long and depth values).<br /> The SDK source code is
            provided so it can be extended to support other input file formats.
          </li>

          <li>Processing large sets of data is dependent on the amount of
            memory available in your system. For larger datasets consider
            increasing the available memory on your system.</li>

          <li>When using the Sharing Service with a Community folder that is
            configured on a remote network location WorldWide Telescope might
            time-out before the whole payload file is loaded.<br /> In this case
            reselecting the Community thumbnail in WorldWide Telescope should
            load the community payload file in stages - several iterations of
            this may be necessary for a large payload file.</li>

          <li>In LCAPI Sample, when loading a file, "Data visualization Layer"
            dialog shown by WWT will be hidden behind the LCAPI sample window
            and will need to be activated manually.</li>

          <li>The Tile Generator tool only supports images with longitude
            values increasing from left to right and latitude values decreasing
            from top to bottom.</li>
        </ol>
      </div>
    </div>
  </div>

  <div class="panel panel-default">

    <div class="panel-heading">
      <h4 class="panel-title">
        <a data-toggle="collapse" data-parent="#accordion" href="#windowsclient">
          Modifying and extending the WWT Windows Client
        </a>
      </h4>
    </div>

    <div id="windowsclient" class="panel-collapse collapse ">
      <div class="panel-body">
        <h4><a href="https://github.com/WorldWideTelescope/wwt-windows-client">Click here to go to the WWT Webclient GitHub Repository</a></h4>

        <p>The Windows client is the most powerful component, and the most
          complex. It can power desktop visualizations, power walls, or even
          full dome multi-projector clusters. For developers with the right set
          of skills, WWT in Windows can be adapted to an even wider set of
          requirements.</p>

        <p>Skills Required: The WWT Windows Client is built in Visual Studio
          2013 with the .net framework 4.5x. It uses custom Winforms controls
          for the user interface, and DirectX11 for the 3D rendering. The
          interface between the C# .NET code and DirectX11 is the SharpDX
          library, another open source component. The client also has
          significant amounts of HLSL Shader code for both rendering and GP/GPU
          computation (such as orbits, temporal animation, lighting, etc.).
          There is a significant amount of TCP/IP networking code, as well as a
          full HTTP server implementation. To modify the core rendering code you
          need to know advanced 3D & spherical math and 3D rendering techniques
          similar to that of 3D Game engines. You also need to understand
          astronomical mathematics.</p>

        <p>There is a layer class model that can be derived from to allow new
          layer types to be defines without having to modify much of the core
          WWT codebase. This will be the most popular way of extending WWT, and
          will probably be exposed as a plug-in model for allowing the main-line
          installations to take 3rd party WWT layers without having to compile
          them into the mainline code.</p>
      </div>
    </div>
  </div>
</div>

<h2>Web Developers</h2>

<div class="panel-group" id="accordion">
  <i>Click the title below to expand or collapse the panel.</i>

  <div class="panel panel-default">
    <div class="panel-heading">
      <h4 class="panel-title">
        <a data-toggle="collapse" data-parent="#accordion" href="#webcontrl">
          HTML5 Web Control API
        </a>
      </h4>
    </div>

    <div id="webcontrl" class="panel-collapse collapse ">
      <div class="panel-body">
        <p>WorldWide Telescope Web Control API allows you to integrate WWT
          into any web data portal, or build mashups to display your own
          interface and WorldWide Telescope.</p>

        <p>Web Control scripts are used to customize the WorldWide Telescope
          web client. The guide below describes the setup, development process,
          API set and samples to aid developers in building their own
          applications. The customization scripts are written in javascript and
          embedded in an html file, and along with custom data files, can be
          used to do one or more of the following tasks:</p>

        <ul>
          <li>Create custom viewing interfaces</li>
          <li>Add images to the view, with their own annotations</li>
          <li>Add annotations to existing images</li>
          <li>Load in and interact with a VO (Virtual Observatory) table</li>
          <li>Load and play tours</li>
          <li>Change the settings for a view</li>
        </ul>

        <p>Note that currently the web controller only applies to the Sky view
          of WorldWide Telescope, and not the Earth, Planet, Panorama or
          SolarSystem views.</p>

        <p>View the Web Control Script Reference documentation.</p>

        <p>You can read the most updated version of this
          guide <a href="https://worldwidetelescope.gitbooks.io/worldwide-telescope-web-control-script-reference/content/">online</a>,
          or download it in pdf, ePub, or Mobi format by following the download
          link on
          the <a href="https://worldwidetelescope.gitbooks.io/worldwide-telescope-web-control-script-reference/">gitbook
            page</a>.</p>

        <div class="row">
          <div class="col-md-10 col-md-offset-1">
            <div class="row home-features">
              <div class="col-md-3 col-md-offset-0 col-sm-6 col-sm-offset-3 col-xs-12">
                <a href="https://worldwidetelescope.gitbooks.io/worldwide-telescope-web-control-script-reference/content/">
                  <img src="/Content/images/gbox.png" class="img-responsive">
                  <i class="fa fa-book"></i>
                  <h4>Read Online</h4>
                </a>
              </div>

              <div class="col-md-3 col-md-offset-0 col-sm-6 col-sm-offset-3 col-xs-12">
                <a href="~/Docs/worldwide-telescope-advanced-guides.pdf">
                  <img src="/Content/images/gbox.png" class="img-responsive">
                  <i class="fa fa-file-pdf-o"></i>
                  <h4>Download .pdf</h4>
                </a>
              </div>

              <div class="col-md-3 col-md-offset-0 col-sm-6 col-sm-offset-3 col-xs-12">
                <a href="~/Docs/worldwide-telescope-web-control-script-reference.mobi">
                  <img src="/Content/images/gbox.png" class="img-responsive">
                  <i class="fa fa-file-text-o"></i>
                  <h4>Download .mobi</h4>
                </a>
              </div>

              <div class="col-md-3 col-md-offset-0 col-sm-6 col-sm-offset-3 col-xs-12">
                <a href="~/Docs/worldwide-telescope-web-control-script-reference.epub">
                  <img src="/Content/images/gbox.png" class="img-responsive">
                  <i class="fa fa-file-text"></i>
                  <h4>Download .epub</h4>
                </a>
              </div>
            </div>
          </div>
        </div>

        <h4>Web Control Script Examples</h4>

        <p>View web control samples on
          our <a href="https://github.com/WorldWideTelescope/worldwide-telescope-web-control-script-reference/blob/master/samples.md">Samples
            page</a></p>

        <p>Dig into some more sophisticated examples:</p>

        <ul>
          <li>
            <a href="~/GetInvolved/ImportImage">ImportImage</a>, which uses
            <a href="https://github.com/WorldWideTelescope/wwt-website/blob/master/WWTMVC5/Scripts/pages/ImportImage.js">ImportImage.js</a>
          </li>
          <li><a href="~/GetInvolved/Spectrum">Spectroscopy in Astronomy</a>, which uses
            <a href="https://github.com/WorldWideTelescope/wwt-website/blob/master/WWTMVC5/Scripts/pages/Spectroscopy.js">Spectroscopy.js</a>
          <li><a href="~/GetInvolved/GreatObservatories">Great Observatories</a>, which uses
            <a href="https://github.com/WorldWideTelescope/wwt-website/blob/master/WWTMVC5/Scripts/pages/Observatories.js">Observatories.js</a></li>
          <li> <a href="~/GetInvolved/PlanetExplorer">Planet Explorer</a>, which uses
            <a href="https://github.com/WorldWideTelescope/wwt-website/blob/master/WWTMVC5/Scripts/pages/PlanetExplorer.js">PlanetExplorer.js</a></li>
        </ul>

        <p>Or see how others across the Web are using it:</p>

        <ul>
          <li>
            <a href="http://www.spitzer.caltech.edu/glimpse360/wwt">Glimpse 360 Viewer</a>
          </li>
          <li><a href="http://planck.ipac.caltech.edu/wwt/">Plank Viewer</a>
          </li>
          <li><a href="http://www.adsass.org/wwt/">ADS All Sky Survey</a>
          </li>
          <li><a href="http://milkyway3d.org">Milky Way 3D</a></li>
        </ul>
      </div>
    </div>
  </div>

  <div class="panel panel-default">
    <div class="panel-heading">
      <h4 class="panel-title">
        <a data-toggle="collapse" data-parent="#accordion" href="#webservice">
          WWT Web Services
        </a>
      </h4>
    </div>

    <div id="webservice" class="panel-collapse collapse ">
      <div class="panel-body">
        <p>Beside the web API, WWT offers a few web services that are detailed
          in the WWT Data Files Reference. For example,
          the <a href="https://worldwidetelescope.gitbooks.io/worldwide-telescope-data-files-reference/content/sharingviews.html#show-image">ShowImage</a>
          service allows a web developer to view an astronomical image in the
          WWT web client.</p>

        <h5>Examples of ShowImage Service</h5>

        <ul>
          <li>
            <a href="http://astropix.ipac.caltech.edu/">AstroPix</a> (click an image and then click "View in WorldWide Telescope" in the upper right)
          </li>
          <li><a href="http://nova.astrometry.net">Astrometry.net </a>(click a solved image and scroll down and click "View in WorldWide Telescope" on the right)
          </li>
          <li><a href="https://www.authorea.com/users/23/articles/8762-the-paper-of-the-future/_show_article"> The "Paper" of the Future</a> (see Figure 7)
          </li>
        </ul>

        <h4>WWT Data Files Reference Guide</h4>

        <p>You can read the most updated version of this
        guide <a href="https://worldwidetelescope.gitbooks.io/worldwide-telescope-data-files-reference/content/">online</a>,
        or download it in pdf, ePub, or Mobi format by following the download
        link on
        the <a href="https://worldwidetelescope.gitbooks.io/worldwide-telescope-data-files-reference/">gitbook
        page</a>.</p>

        <div class="row">
          <div class="col-md-10 col-md-offset-1">
            <div class="row home-features">
              <div class="col-md-3 col-md-offset-0 col-sm-6 col-sm-offset-3 col-xs-12">
                <a href="https://worldwidetelescope.gitbooks.io/worldwide-telescope-data-files-reference/content/">
                  <img src="/Content/images/gbox.png" class="img-responsive">
                  <i class="fa fa-book"></i>
                  <h4>Read Online</h4>
                </a>
              </div>

              <div class="col-md-3 col-md-offset-0 col-sm-6 col-sm-offset-3 col-xs-12">
                <a href="~/Docs/worldwide-telescope-data-files-reference.pdf">
                  <img src="/Content/images/gbox.png" class="img-responsive">
                  <i class="fa fa-file-pdf-o"></i>
                  <h4>Download .pdf</h4>
                </a>
              </div>

              <div class="col-md-3 col-md-offset-0 col-sm-6 col-sm-offset-3 col-xs-12">
                <a href="~/Docs/worldwide-telescope-data-files-reference.mobi">
                  <img src="/Content/images/gbox.png" class="img-responsive">
                  <i class="fa fa-file-text-o"></i>
                  <h4>Download .mobi</h4>
                </a>
              </div>

              <div class="col-md-3 col-md-offset-0 col-sm-6 col-sm-offset-3 col-xs-12">
                <a href="~/Docs/worldwide-telescope-data-files-reference.epub">
                  <img src="/Content/images/gbox.png" class="img-responsive">
                  <i class="fa fa-file-text"></i>
                  <h4>Download .epub</h4>
                </a>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
